/*
 * File:   Obstacle.h
 * Author: Elevator
 *
 * Created on July 15, 2013, 10:43 PM
 */

#ifndef DATA_OBSTACLE_H
#define DATA_OBSTACLE_H

#include <string>
#include "Common/Common.h"
#include "Shape.h"

namespace data {

	class Obstacle {
	public:
		Obstacle( std::string name ) :
		_id( name )
		{
			_shapes = new Vector<const Shape*>();
		}

		~Obstacle()
		{
			delete _shapes;
		}

		inline const std::string GetId( ) const { return _id; }
		inline void SetId( std::string id ) { _id = id; }

		inline void AddShape( const Shape* shape ) { _shapes->Add(shape); }
		inline void RemoveShape( const Shape* shape ) { _shapes->Remove(shape); }
		inline const IIterable<const Shape*>* GetShapes( ) const { return _shapes; }

	private:
		std::string _id;
		Vector<const Shape*>* _shapes;
	};
}

#endif	/* OBSTACLE_H */

